package com.esunny.resourcevisualization.dao;

import com.esunny.resourcevisualization.domain.entity.ResourceTypeEntityData;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @version 1.0.0.0
 * @InterfaceName ResourceTypeEntityDataDao
 * @Description 资源类别实体字段值表操作
 * @Author baochencong
 * @Date 2020/9/28 9:18
 */

@Mapper
public interface ResourceTypeEntityDataDao {

    /**
     * 添加资源类别实体字段值
     *
     * @param resourceTypeEntityData 资源类别实体字段值
     * @return 添加结果
     */
    boolean addResourceTypeEntityData(ResourceTypeEntityData resourceTypeEntityData);

    /**
     * 通过资源类别英文名删除资源类别实体字段值
     *
     * @param name 资源类别英文名
     */
    void deleteResourceTypeEntityDataByName(String name);

    /**
     * 通过资源类别实体id删除资源类别实体字段值
     *
     * @param entityId 资源类别实体id
     */
    void deleteResourceTypeEntityDataByEntityId(int entityId);

    /**
     * 通过资源类别英文名和资源类别字段英文名删除该资源类别下的所有该字段值
     *
     * @param name      资源类别英文名
     * @param fieldName 资源类别实体字段英文名
     */
    void deleteResourceTypeEntityDataByNameAndFieldName(String name, String fieldName);

    /**
     * 通过资源类别字段英文名修改资源类别实体字段值表资源类别字段英文名
     *
     * @param oldFieldName 老的资源类别字段英文名
     * @param newFieldName 新的资源类别字段英文名
     */
    void updateResourceTypeEntityDataByFieldName(String oldFieldName, String newFieldName);

    /**
     * 通过资源类别实体字段值id修改资源类别实体字段值
     *
     * @param entityDataId    资源类别实体字段值id
     * @param entityDataValue 资源类别实体字段值
     * @return 修改结果
     */
    boolean updateResourceTypeEntityDataByEntityDataId(int entityDataId, String entityDataValue);

    /**
     * 通过资源类别实体id和资源类别实体字段英文名修改资源类别实体字段值
     *
     * @param resourceTypeEntityData 资源类别实体实体id，资源类别实体字段英文名，资源类别实体字段值
     * @return 修改结果
     */
    boolean updateResourceTypeEntityDataByEntityIdAndFieldName(ResourceTypeEntityData resourceTypeEntityData);

    /**
     * 通过资源类别实体id和资源类别实体字段英文名获取资源类别实体字段值
     *
     * @param entityId  资源类别实体id
     * @param fieldName 资源类别实体字段英文名
     * @return 资源类别实体字段值
     */
    ResourceTypeEntityData getResourceTypeEntityDataByEntityIdAndFieldName(int entityId, String fieldName);

    /**
     * 通过资源类别实体字段值id获取资源类别实体字段值
     *
     * @param entityDataId 资源类别实体字段值id
     * @return 资源类别实体字段值
     */
    ResourceTypeEntityData getResourceTypeEntityDataByEntityDataId(int entityDataId);

    /**
     * 通过资源类别英文名和字段英文名获取资源类别实体字段值列表
     *
     * @param name      资源类别英文名
     * @param fieldName 字段英文名
     * @return 资源类别实体字段值列表
     */
    List<ResourceTypeEntityData> getResourceTypeEntityDataByNameAndFieldNameAndValue(String name, String fieldName, String value);

    /**
     * 通过资源类别实体id获取资源类别实体字段值列表
     *
     * @param entityId 资源类别实体id
     * @return 资源类别实体字段值列表
     */
    List<ResourceTypeEntityData> getResourceTypeEntityDataByEntityId(int entityId);
}
